//
//  main.swift
//  15.结构体和类
//
//  Created by 左忠飞 on 2021/8/4.
//

//结构体提供了默认成员初始化方法
//var myTown = Town(population: 10_000, numberOfStoplights: 6)
var myTown = Town(region: "North", population: 10_000, stoplights: 5)
myTown?.printDescription()

//使用委托初始化方法
var myTown2 = Town(population: 10_000, stoplights: 8)
myTown2?.printDescription()

//调用可空初始化方法,返回一个nil
var myTown3 = Town(population:0, stoplights: 4)
//这个myTown3是一个nil,使用可空链式调用对象方法,方法不会执行
myTown3?.printDescription()

//某些情况下类的初始化方法会自动继承
/**
 如果子类为所有新增的属性提供了默认值,那么下面两个场景下,类会继承父类的初始化方法
 1:如果子类没有定义任何指定初始化方法,继承父类的指定初始化方法
 2:如果子类实现了父类的所有指定初始化方法,无论是通过显式实现还是隐式继承,就会继承父类的所有便捷初始化方法
 */
//var zom1 = Zombie(town: myTown, monsterName: "Fred")
//zom1.terrorizeTown()
//zom1.town?.printDescription()

//使用便捷初始化方法创建实例
var converientZombie = Zombie(limp: true, fallingApart: false)


//创建一个可选的Zombie对象
//把可选的Zombie对象设置为nil,对象会自动调用deinit方法
var zombie2:Zombie? = Zombie(limp: false, fallingApart: false, town: myTown, monsterName: "Fred")
zombie2 = nil

